package com.xygz.orm;

import com.xygz.orm.internal.query.WhereItem;
import com.xygz.orm.model.ColumnData;

/**
 *
 * the description for class SQLColumnCheck
 *
 * @author xiyuan-lgz 2025-09-21 @version v1.0.0 新建与整理
 */
public abstract class ConditionCheck<E, Child extends ConditionCheck<E, Child>> {
    
    
    /**
     * 检查条件参数,当检测到条件 递归时发生 抛出 IllegalArgumentException
     *
     * @param where 条件参数
     * @throws IllegalArgumentException 异常信息
     */
    protected abstract void checkConditionStackOverflow(WhereItem where) throws IllegalArgumentException;
    
    protected abstract <E> ColumnData<String, Class<E>> parseAndValidateColumn(String column);
    
    /**
     * @param column 列信息
     * @param <E>    列类型
     * @return 列信息
     */
    protected abstract <E> ColumnData<SFunc<E, ?>, Class<E>> parseAndValidateColumn(SFunc<E, ?> column);
}
